/**
 * Dart 中的泛型接口
 * 

 * 
 * 
 */


//  实现数据缓存的功能：有文件缓存，和内存缓存和文件缓存按照接口约束实现
  
//  1.定义一个泛型接口 约束实现它子类必须有getByKey(key)和setByKey(key,value)
  
//  2.要求setByKey的时候的value的类型和实例化子类的时候指定的类型一致

abstract class Cache<T> {

getByKey(String key);

void setByKey(String key,T value);
  
}

//文件缓存
class FlieCache<T> implements Cache<T>{
  @override
  getByKey(String key) {

    return "";

  }

  @override
  void setByKey(String key, T value) {

        print("我是文件缓存 把key=${key}   value=${value}的数据写入文件中" );

  }



}

//内存缓存
class MemoryCache<T> implements Cache<T>{
  @override
  getByKey(String key) {
   
   return "";

  }

  @override
  void setByKey(String key, T value) {

        print("我是内存缓存 把key=${key}   value=${value}的数据写入内存中" );

  }


}


void main(){

MemoryCache memoryCache=new MemoryCache();

memoryCache.setByKey("index","首页数据");

//指定类型

MemoryCache m =new MemoryCache<Map>();

m.setByKey("index", {"name":"张三","age":20});

}

